第三步:添加权限
双击“AndroidManifest.xml”,打开工程配置文件,添加以下几条必备权限:
<!--允许程序访问网络连接,可能产生GPRS流量-->
<uses-permission android:name="android.permission.INTERNET" />
<!--允许程序获取网络信息状态-->
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<!--允许程序获取当前WIFI接入的状态以及WLAN特点信息-->
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<!--允许程序写入外部存储-->
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<!--允许程序访问电话状态-->
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
<!--允许程序改变WIFI状态-->
<uses-permission android:name="android.permission.CHANGE_WIFI_STATE" />
<!--允许程序接收卫星定位信息-->
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>
<!--允许程序挂载、反挂载外部文件系统-->
<uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS" tools:ignore="ProtectedPermissions" />
<!--允许程序访问摄像头拍照-->
<uses-permission android:name="android.permission.CAMERA "/>
![]() |
| 图:添加权限 |
Android 6.0及以上操作系统在原有AndroidManifest.xml声明权限的基础上新增运行时权限动态检测,定位等权限也包含在其中。申请动态权限,需在“build.gradle”、"MainActivity.java"文件中,按如下步骤添加代码:
(1)在“build.gradle”的dependencies中添加依赖。
implementation 'pub.devrel:easypermissions:3.0.0'
![]() |
| 图:添加权限依赖库 |
(2)在"MainActivity.java"中引用权限相关包。
import android.Manifest;
import android.os.Build;
import android.os.Bundle;
import pub.devrel.easypermissions.EasyPermissions;
![]() |
| 图:引入权限相关包 |
(3)在 "MainActivity.java"的“onCreate”中,添加“requestPermissions();”。
(4)在 "MainActivity.java"添加如下代码:
/**
* 需要申请的权限数组
*/
protected String[] needPermissions = {
Manifest.permission.WRITE_EXTERNAL_STORAGE,
Manifest.permission.ACCESS_FINE_LOCATION,
Manifest.permission.READ_PHONE_STATE,
Manifest.permission.ACCESS_WIFI_STATE,
Manifest.permission.CAMERA,
Manifest.permission.ACCESS_NETWORK_STATE,
Manifest.permission.CHANGE_WIFI_STATE,
};
/**
* 检测权限
* return true:已经获取权限
* return false: 未获取权限,主动请求权限
*/
public boolean checkPermissions(String[] permissions) {
return EasyPermissions.hasPermissions(this, permissions);
}
/**
* 申请动态权限
*/
private void requestPermissions() {
if (Build.VERSION.SDK_INT < Build.VERSION_CODES.M) {
return;
}
if (!checkPermissions(needPermissions)) {
EasyPermissions.requestPermissions(
this,
"为了应用的正常使用,请允许以下权限。",
0,
Manifest.permission.WRITE_EXTERNAL_STORAGE,
Manifest.permission.ACCESS_FINE_LOCATION,
Manifest.permission.READ_PHONE_STATE,
Manifest.permission.ACCESS_WIFI_STATE,
Manifest.permission.CAMERA,
Manifest.permission.ACCESS_NETWORK_STATE,
Manifest.permission.CHANGE_WIFI_STATE);
//没有授权,编写申请权限代码
} else {
//已经授权,执行操作代码
}
}
/**
* 回调函数
*/
@Override
public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) {
super.onRequestPermissionsResult(requestCode, permissions, grantResults);
// Forward results to EasyPermissions
EasyPermissions.onRequestPermissionsResult(requestCode, permissions, grantResults, this);
}
![]() |
| 图:添加权限代码 |
以下是可选代码。
在“AndroidManifest.xml”中,承载 MapControl 的 Activity 项目中添加 Activity 配置,让地图界面在横竖屏切换时不再重复调用 onCreate。代码如下:
android:configChanges="keyboardHidden|orientation|screenSize"
在 AndroidManifest.xml的manifest节点下添加以下配置:
<supports-screens
android:anyDensity="true"
android:largeScreens="true"
android:normalScreens="true"
android:smallScreens="true"/>
![]() |
| 图:添加Activity设置和多格式屏幕设置 |




